--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RNS/vendor/validate.py 032b1aa3b2808dc5aca0aebada0776c8ee7c6b20 (032b1aa3) Text, 17.50 KB
T8b949e# validate.py
T8b949e# -*- coding: utf-8 -*-
T8b949e# pylint: disable=
T8b949e#
T8b949e# A Validator object.
T8b949e#
T8b949e# Copyright (C) 2005-2014:
T8b949e# (name) : (email)
T8b949e# Michael Foord: fuzzyman AT voidspace DOT org DOT uk
T8b949e# Mark Andrews: mark AT la-la DOT com
T8b949e# Nicola Larosa: nico AT tekNico DOT net
T8b949e# Rob Dennis: rdennis AT gmail DOT com
T8b949e# Eli Courtwright: eli AT courtwright DOT org
T8b949e# This software is licensed under the terms of the BSD license.
T8b949e# http://opensource.org/licenses/BSD-3-Clause
T8b949e# ConfigObj 5 - main repository for documentation and issue tracking:
T8b949e# https://github.com/DiffSK/configobj
Tff7b72import T7ee787re
Tff7b72import T7ee787sys
Tff7b72from T7ee787pprint Tff7b72import Te6edf3pprint
Te6edf3__version__ Tff7b72= Ta5d6ff'Ta5d6ff1.0.1Ta5d6ff'
Te6edf3__all__ Tff7b72= Tb4b4b4(
Ta5d6ff'Ta5d6ffdottedQuadToNumTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffnumToDottedQuadTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffValidateErrorTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffVdtUnknownCheckErrorTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffVdtParamErrorTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffVdtTypeErrorTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffVdtValueErrorTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffVdtValueTooSmallErrorTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffVdtValueTooBigErrorTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffVdtValueTooShortErrorTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffVdtValueTooLongErrorTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffVdtMissingValueTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffValidatorTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_integerTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_floatTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_booleanTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_listTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_tupleTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_ip_addrTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_stringTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_int_listTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_bool_listTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_float_listTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_string_listTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_ip_addr_listTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_mixed_listTa5d6ff'Tb4b4b4,
Ta5d6ff'Ta5d6ffis_optionTa5d6ff'Tb4b4b4,
Tb4b4b4)
Te6edf3_list_arg Tff7b72= Te6edf3reTff7b72.Td2a8ffcompileTb4b4b4(Ta5d6ffrTa5d6ff'''
Ta5d6ff (?:
Ta5d6ff ([a-zA-Z_][a-zA-Z0-9_]*)Ta5d6ff\Ta5d6ffs*=Ta5d6ff\Ta5d6ffs*listTa5d6ff\Ta5d6ff(
Ta5d6ff (
Ta5d6ff (?:
Ta5d6ff Ta5d6ff\Ta5d6ffs*
Ta5d6ff (?:
Ta5d6ff (?:Ta5d6ff"Ta5d6ff.*?Ta5d6ff"Ta5d6ff)| # double quotes
Ta5d6ff (?:Ta5d6ff'Ta5d6ff.*?Ta5d6ff'Ta5d6ff)| # single quotes
Ta5d6ff (?:[^Ta5d6ff'Ta5d6ff"Ta5d6ff,Ta5d6ff\Ta5d6ffsTa5d6ff\Ta5d6ff)][^,Ta5d6ff\Ta5d6ff)]*?) # unquoted
Ta5d6ff )
Ta5d6ff Ta5d6ff\Ta5d6ffs*,Ta5d6ff\Ta5d6ffs*
Ta5d6ff )*
Ta5d6ff (?:
Ta5d6ff (?:Ta5d6ff"Ta5d6ff.*?Ta5d6ff"Ta5d6ff)| # double quotes
Ta5d6ff (?:Ta5d6ff'Ta5d6ff.*?Ta5d6ff'Ta5d6ff)| # single quotes
Ta5d6ff (?:[^Ta5d6ff'Ta5d6ff"Ta5d6ff,Ta5d6ff\Ta5d6ffsTa5d6ff\Ta5d6ff)][^,Ta5d6ff\Ta5d6ff)]*?) # unquoted
Ta5d6ff )? # last one
Ta5d6ff )
Ta5d6ff Ta5d6ff\Ta5d6ff)
Ta5d6ff )
Ta5d6ff'''Tb4b4b4, Te6edf3reTff7b72.Td2a8ffVERBOSE Tff7b72| Te6edf3reTff7b72.Td2a8ffDOTALLTb4b4b4) T8b949e# two groups
Te6edf3_list_members Tff7b72= Te6edf3reTff7b72.Td2a8ffcompileTb4b4b4(Ta5d6ffrTa5d6ff'''
Ta5d6ff (
Ta5d6ff (?:Ta5d6ff"Ta5d6ff.*?Ta5d6ff"Ta5d6ff)| # double quotes
Ta5d6ff (?:Ta5d6ff'Ta5d6ff.*?Ta5d6ff'Ta5d6ff)| # single quotes
Ta5d6ff (?:[^Ta5d6ff'Ta5d6ff"Ta5d6ff,Ta5d6ff\Ta5d6ffs=][^,=]*?) # unquoted
Ta5d6ff )
Ta5d6ff (?:
Ta5d6ff (?:Ta5d6ff\Ta5d6ffs*,Ta5d6ff\Ta5d6ffs*)|(?:Ta5d6ff\Ta5d6ffs*$) # comma
Ta5d6ff )
Ta5d6ff'''Tb4b4b4, Te6edf3reTff7b72.Td2a8ffVERBOSE Tff7b72| Te6edf3reTff7b72.Td2a8ffDOTALLTb4b4b4) T8b949e# one group
Te6edf3_paramstring Tff7b72= Ta5d6ffrTa5d6ff'''
Ta5d6ff (?:
Ta5d6ff (
Ta5d6ff (?:
Ta5d6ff [a-zA-Z_][a-zA-Z0-9_]*Ta5d6ff\Ta5d6ffs*=Ta5d6ff\Ta5d6ffs*listTa5d6ff\Ta5d6ff(
Ta5d6ff (?:
Ta5d6ff Ta5d6ff\Ta5d6ffs*
Ta5d6ff (?:
Ta5d6ff (?:Ta5d6ff"Ta5d6ff.*?Ta5d6ff"Ta5d6ff)| # double quotes
Ta5d6ff (?:Ta5d6ff'Ta5d6ff.*?Ta5d6ff'Ta5d6ff)| # single quotes
Ta5d6ff (?:[^Ta5d6ff'Ta5d6ff"Ta5d6ff,Ta5d6ff\Ta5d6ffsTa5d6ff\Ta5d6ff)][^,Ta5d6ff\Ta5d6ff)]*?) # unquoted
Ta5d6ff )
Ta5d6ff Ta5d6ff\Ta5d6ffs*,Ta5d6ff\Ta5d6ffs*
Ta5d6ff )*
Ta5d6ff (?:
Ta5d6ff (?:Ta5d6ff"Ta5d6ff.*?Ta5d6ff"Ta5d6ff)| # double quotes
Ta5d6ff (?:Ta5d6ff'Ta5d6ff.*?Ta5d6ff'Ta5d6ff)| # single quotes
Ta5d6ff (?:[^Ta5d6ff'Ta5d6ff"Ta5d6ff,Ta5d6ff\Ta5d6ffsTa5d6ff\Ta5d6ff)][^,Ta5d6ff\Ta5d6ff)]*?) # unquoted
Ta5d6ff )? # last one
Ta5d6ff Ta5d6ff\Ta5d6ff)
Ta5d6ff )|
Ta5d6ff (?:
Ta5d6ff (?:Ta5d6ff"Ta5d6ff.*?Ta5d6ff"Ta5d6ff)| # double quotes
Ta5d6ff (?:Ta5d6ff'Ta5d6ff.*?Ta5d6ff'Ta5d6ff)| # single quotes
Ta5d6ff (?:[^Ta5d6ff'Ta5d6ff"Ta5d6ff,Ta5d6ff\Ta5d6ffs=][^,=]*?)| # unquoted
Ta5d6ff (?: # keyword argument
Ta5d6ff [a-zA-Z_][a-zA-Z0-9_]*Ta5d6ff\Ta5d6ffs*=Ta5d6ff\Ta5d6ffs*
Ta5d6ff (?:
Ta5d6ff (?:Ta5d6ff"Ta5d6ff.*?Ta5d6ff"Ta5d6ff)| # double quotes
Ta5d6ff (?:Ta5d6ff'Ta5d6ff.*?Ta5d6ff'Ta5d6ff)| # single quotes
Ta5d6ff (?:[^Ta5d6ff'Ta5d6ff"Ta5d6ff,Ta5d6ff\Ta5d6ffs=][^,=]*?) # unquoted
Ta5d6ff )
Ta5d6ff )
Ta5d6ff )
Ta5d6ff )
Ta5d6ff (?:
Ta5d6ff (?:Ta5d6ff\Ta5d6ffs*,Ta5d6ff\Ta5d6ffs*)|(?:Ta5d6ff\Ta5d6ffs*$) # comma
Ta5d6ff )
Ta5d6ff )
Ta5d6ff Ta5d6ff'''
Te6edf3_matchstring Tff7b72= Ta5d6ff'Ta5d6ff^Tffd700%sTa5d6ff*Ta5d6ff' Tff7b72% Te6edf3_paramstring
Tff7b72def Td2a8ffdottedQuadToNumTb4b4b4(Te6edf3ipTb4b4b4)Tb4b4b4:
T8b949e# import here to avoid it when ip_addr values are not used
Tff7b72import T7ee787socketTff7b72, T7ee787struct
Tff7b72tryTb4b4b4:
Tff7b72return Te6edf3structTff7b72.Td2a8ffunpackTb4b4b4(Ta5d6ff'Ta5d6ff!LTa5d6ff'Tb4b4b4,
Te6edf3socketTff7b72.Td2a8ffinet_atonTb4b4b4(Te6edf3ipTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72except Te6edf3socketTff7b72.Td2a8fferrorTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff'Ta5d6ffNot a good dotted-quad IP: Tffd700%sTa5d6ff' Tff7b72% Te6edf3ipTb4b4b4)
Tff7b72return
Tff7b72def Td2a8ffnumToDottedQuadTb4b4b4(Te6edf3numTb4b4b4)Tb4b4b4:
T8b949e# import here to avoid it when ip_addr values are not used
Tff7b72import T7ee787socketTff7b72, T7ee787struct
T8b949e# no need to intercept here, 4294967295L is fine
Tff7b72if Te6edf3num Tff7b72> Tffa657intTb4b4b4(T79c0ff4294967295Tb4b4b4) Tff7b72or Te6edf3num Tff7b72< T79c0ff0Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff'Ta5d6ffNot a good numeric IP: Tffd700%sTa5d6ff' Tff7b72% Te6edf3numTb4b4b4)
Tff7b72tryTb4b4b4:
Tff7b72return Te6edf3socketTff7b72.Td2a8ffinet_ntoaTb4b4b4(
Te6edf3structTff7b72.Td2a8ffpackTb4b4b4(Ta5d6ff'Ta5d6ff!LTa5d6ff'Tb4b4b4, Tffa657intTb4b4b4(Te6edf3numTb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72except Tb4b4b4(Te6edf3socketTff7b72.Td2a8fferrorTb4b4b4, Te6edf3structTff7b72.Td2a8fferrorTb4b4b4, Tf85149OverflowErrorTb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff'Ta5d6ffNot a good numeric IP: Tffd700%sTa5d6ff' Tff7b72% Te6edf3numTb4b4b4)
Tff7b72class T56d364ValidateErrorTb4b4b4(Tf85149ExceptionTb4b4b4)Tb4b4b4:
T8b949e"""
This error indicates that the check failed.
It can be the base class for more specific errors.
"""
Tff7b72class T56d364VdtMissingValueTb4b4b4(Te6edf3ValidateErrorTb4b4b4)Tb4b4b4:
T8b949e"""No value was supplied to a check that needed one."""
Tff7b72class T56d364VdtUnknownCheckErrorTb4b4b4(Te6edf3ValidateErrorTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Te6edf3ValidateErrorTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ffthe check Ta5d6ff"Tffd700{}Ta5d6ff"Ta5d6ff is unknown.Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72class T56d364VdtParamErrorTb4b4b4(Tf85149SyntaxErrorTb4b4b4)Tb4b4b4:
Te6edf3NOT_GIVEN Tff7b72= Tffa657objectTb4b4b4(Tb4b4b4)
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3name_or_msgTb4b4b4, Te6edf3valueTff7b72=Te6edf3NOT_GIVENTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3value Tff7b72is Tff7b72selfTff7b72.Td2a8ffNOT_GIVENTb4b4b4:
Tf85149SyntaxErrorTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3name_or_msgTb4b4b4)
Tff7b72elseTb4b4b4:
Tf85149SyntaxErrorTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ffpassed an incorrect value Ta5d6ff"Tffd700{}Ta5d6ff"Ta5d6ff for parameter Ta5d6ff"Tffd700{}Ta5d6ff"Ta5d6ff.Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3valueTb4b4b4, Te6edf3name_or_msgTb4b4b4)Tb4b4b4)
Tff7b72class T56d364VdtTypeErrorTb4b4b4(Te6edf3ValidateErrorTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Te6edf3ValidateErrorTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ffthe value Ta5d6ff"Tffd700{}Ta5d6ff"Ta5d6ff is of the wrong type.Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72class T56d364VdtValueErrorTb4b4b4(Te6edf3ValidateErrorTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Te6edf3ValidateErrorTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ffthe value Ta5d6ff"Tffd700{}Ta5d6ff"Ta5d6ff is unacceptable.Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72class T56d364VdtValueTooSmallErrorTb4b4b4(Te6edf3VdtValueErrorTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Te6edf3ValidateErrorTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ffthe value Ta5d6ff"Tffd700{}Ta5d6ff"Ta5d6ff is too small.Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72class T56d364VdtValueTooBigErrorTb4b4b4(Te6edf3VdtValueErrorTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Te6edf3ValidateErrorTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ffthe value Ta5d6ff"Tffd700{}Ta5d6ff"Ta5d6ff is too big.Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72class T56d364VdtValueTooShortErrorTb4b4b4(Te6edf3VdtValueErrorTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Te6edf3ValidateErrorTff7b72.Td2a8ff__init__Tb4b4b4(
Tff7b72selfTb4b4b4,
Ta5d6ff'Ta5d6ffthe value Ta5d6ff"Tffd700{}Ta5d6ff"Ta5d6ff is too short.Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72class T56d364VdtValueTooLongErrorTb4b4b4(Te6edf3VdtValueErrorTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Te6edf3ValidateErrorTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ffthe value Ta5d6ff"Tffd700{}Ta5d6ff"Ta5d6ff is too long.Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4)
Tff7b72class T56d364ValidatorTb4b4b4(Tffa657objectTb4b4b4)Tb4b4b4:
T8b949e# this regex does the initial parsing of the checks
Te6edf3_func_re Tff7b72= Te6edf3reTff7b72.Td2a8ffcompileTb4b4b4(Ta5d6ffrTa5d6ff'Ta5d6ff([^Ta5d6ff\Ta5d6ff(Ta5d6ff\Ta5d6ff)]+?)Ta5d6ff\Ta5d6ff((.*)Ta5d6ff\Ta5d6ff)Ta5d6ff'Tb4b4b4, Te6edf3reTff7b72.Td2a8ffDOTALLTb4b4b4)
T8b949e# this regex takes apart keyword arguments
Te6edf3_key_arg Tff7b72= Te6edf3reTff7b72.Td2a8ffcompileTb4b4b4(Ta5d6ffrTa5d6ff'Ta5d6ff^([a-zA-Z_][a-zA-Z0-9_]*)Ta5d6ff\Ta5d6ffs*=Ta5d6ff\Ta5d6ffs*(.*)$Ta5d6ff'Tb4b4b4, Te6edf3reTff7b72.Td2a8ffDOTALLTb4b4b4)
T8b949e# this regex finds keyword=list(....) type values
Te6edf3_list_arg Tff7b72= Te6edf3_list_arg
T8b949e# this regex takes individual values out of lists - in one pass
Te6edf3_list_members Tff7b72= Te6edf3_list_members
T8b949e# These regexes check a set of arguments for validity
T8b949e# and then pull the members out
Te6edf3_paramfinder Tff7b72= Te6edf3reTff7b72.Td2a8ffcompileTb4b4b4(Te6edf3_paramstringTb4b4b4, Te6edf3reTff7b72.Td2a8ffVERBOSE Tff7b72| Te6edf3reTff7b72.Td2a8ffDOTALLTb4b4b4)
Te6edf3_matchfinder Tff7b72= Te6edf3reTff7b72.Td2a8ffcompileTb4b4b4(Te6edf3_matchstringTb4b4b4, Te6edf3reTff7b72.Td2a8ffVERBOSE Tff7b72| Te6edf3reTff7b72.Td2a8ffDOTALLTb4b4b4)
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3functionsTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fffunctions Tff7b72= Tb4b4b4{
Ta5d6ff'Ta5d6ff'Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff_passTb4b4b4,
Ta5d6ff'Ta5d6ffintegerTa5d6ff'Tb4b4b4: Te6edf3is_integerTb4b4b4,
Ta5d6ff'Ta5d6fffloatTa5d6ff'Tb4b4b4: Te6edf3is_floatTb4b4b4,
Ta5d6ff'Ta5d6ffbooleanTa5d6ff'Tb4b4b4: Te6edf3is_booleanTb4b4b4,
Ta5d6ff'Ta5d6ffip_addrTa5d6ff'Tb4b4b4: Te6edf3is_ip_addrTb4b4b4,
Ta5d6ff'Ta5d6ffstringTa5d6ff'Tb4b4b4: Te6edf3is_stringTb4b4b4,
Ta5d6ff'Ta5d6fflistTa5d6ff'Tb4b4b4: Te6edf3is_listTb4b4b4,
Ta5d6ff'Ta5d6fftupleTa5d6ff'Tb4b4b4: Te6edf3is_tupleTb4b4b4,
Ta5d6ff'Ta5d6ffint_listTa5d6ff'Tb4b4b4: Te6edf3is_int_listTb4b4b4,
Ta5d6ff'Ta5d6fffloat_listTa5d6ff'Tb4b4b4: Te6edf3is_float_listTb4b4b4,
Ta5d6ff'Ta5d6ffbool_listTa5d6ff'Tb4b4b4: Te6edf3is_bool_listTb4b4b4,
Ta5d6ff'Ta5d6ffip_addr_listTa5d6ff'Tb4b4b4: Te6edf3is_ip_addr_listTb4b4b4,
Ta5d6ff'Ta5d6ffstring_listTa5d6ff'Tb4b4b4: Te6edf3is_string_listTb4b4b4,
Ta5d6ff'Ta5d6ffmixed_listTa5d6ff'Tb4b4b4: Te6edf3is_mixed_listTb4b4b4,
Ta5d6ff'Ta5d6ffpassTa5d6ff'Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff_passTb4b4b4,
Ta5d6ff'Ta5d6ffoptionTa5d6ff'Tb4b4b4: Te6edf3is_optionTb4b4b4,
Ta5d6ff'Ta5d6ffforce_listTa5d6ff'Tb4b4b4: Te6edf3force_listTb4b4b4,
Tb4b4b4}
Tff7b72if Te6edf3functions Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8fffunctionsTff7b72.Td2a8ffupdateTb4b4b4(Te6edf3functionsTb4b4b4)
T8b949e# tekNico: for use by ConfigObj
Tff7b72selfTff7b72.Td2a8ffbaseErrorClass Tff7b72= Te6edf3ValidateError
Tff7b72selfTff7b72.Td2a8ff_cache Tff7b72= Tb4b4b4{Tb4b4b4}
Tff7b72def Td2a8ffcheckTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3checkTb4b4b4, Te6edf3valueTb4b4b4, Te6edf3missingTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Te6edf3fun_nameTb4b4b4, Te6edf3fun_argsTb4b4b4, Te6edf3fun_kwargsTb4b4b4, Te6edf3default Tff7b72= Tff7b72selfTff7b72.Td2a8ff_parse_with_cachingTb4b4b4(Te6edf3checkTb4b4b4)
Tff7b72if Te6edf3missingTb4b4b4:
Tff7b72if Te6edf3default Tff7b72is Tff7b72NoneTb4b4b4:
T8b949e# no information needed here - to be handled by caller
Tff7b72raise Te6edf3VdtMissingValueTb4b4b4(Tb4b4b4)
Te6edf3value Tff7b72= Tff7b72selfTff7b72.Td2a8ff_handle_noneTb4b4b4(Te6edf3defaultTb4b4b4)
Tff7b72if Te6edf3value Tff7b72is Tff7b72NoneTb4b4b4:
Tff7b72return Tff7b72None
Tff7b72return Tff7b72selfTff7b72.Td2a8ff_check_valueTb4b4b4(Te6edf3valueTb4b4b4, Te6edf3fun_nameTb4b4b4, Te6edf3fun_argsTb4b4b4, Te6edf3fun_kwargsTb4b4b4)
Tff7b72def Td2a8ff_handle_noneTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3value Tff7b72== Ta5d6ff'Ta5d6ffNoneTa5d6ff'Tb4b4b4:
Tff7b72return Tff7b72None
Tff7b72elif Te6edf3value Tff7b72in Tb4b4b4(Ta5d6ff"Ta5d6ff'Ta5d6ffNoneTa5d6ff'Ta5d6ff"Tb4b4b4, Ta5d6ff'Ta5d6ff"Ta5d6ffNoneTa5d6ff"Ta5d6ff'Tb4b4b4)Tb4b4b4:
T8b949e# Special case a quoted None
Te6edf3value Tff7b72= Tff7b72selfTff7b72.Td2a8ff_unquoteTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72return Te6edf3value
Tff7b72def Td2a8ff_parse_with_cachingTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3checkTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3check Tff7b72in Tff7b72selfTff7b72.Td2a8ff_cacheTb4b4b4:
Te6edf3fun_nameTb4b4b4, Te6edf3fun_argsTb4b4b4, Te6edf3fun_kwargsTb4b4b4, Te6edf3default Tff7b72= Tff7b72selfTff7b72.Td2a8ff_cacheTb4b4b4[Te6edf3checkTb4b4b4]
T8b949e# We call list and dict below to work with *copies* of the data
T8b949e# rather than the original (which are mutable of course)
Te6edf3fun_args Tff7b72= Tffa657listTb4b4b4(Te6edf3fun_argsTb4b4b4)
Te6edf3fun_kwargs Tff7b72= Tffa657dictTb4b4b4(Te6edf3fun_kwargsTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3fun_nameTb4b4b4, Te6edf3fun_argsTb4b4b4, Te6edf3fun_kwargsTb4b4b4, Te6edf3default Tff7b72= Tff7b72selfTff7b72.Td2a8ff_parse_checkTb4b4b4(Te6edf3checkTb4b4b4)
Te6edf3fun_kwargs Tff7b72= Tb4b4b4{Tffa657strTb4b4b4(Te6edf3keyTb4b4b4)Tb4b4b4: Te6edf3value Tff7b72for Tb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4) Tff7b72in Tffa657listTb4b4b4(Te6edf3fun_kwargsTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4}
Tff7b72selfTff7b72.Td2a8ff_cacheTb4b4b4[Te6edf3checkTb4b4b4] Tff7b72= Te6edf3fun_nameTb4b4b4, Tffa657listTb4b4b4(Te6edf3fun_argsTb4b4b4)Tb4b4b4, Tffa657dictTb4b4b4(Te6edf3fun_kwargsTb4b4b4)Tb4b4b4, Te6edf3default
Tff7b72return Te6edf3fun_nameTb4b4b4, Te6edf3fun_argsTb4b4b4, Te6edf3fun_kwargsTb4b4b4, Te6edf3default
Tff7b72def Td2a8ff_check_valueTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4, Te6edf3fun_nameTb4b4b4, Te6edf3fun_argsTb4b4b4, Te6edf3fun_kwargsTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3fun Tff7b72= Tff7b72selfTff7b72.Td2a8fffunctionsTb4b4b4[Te6edf3fun_nameTb4b4b4]
Tff7b72except Tf85149KeyErrorTb4b4b4:
Tff7b72raise Te6edf3VdtUnknownCheckErrorTb4b4b4(Te6edf3fun_nameTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72return Te6edf3funTb4b4b4(Te6edf3valueTb4b4b4, Tff7b72*Te6edf3fun_argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3fun_kwargsTb4b4b4)
Tff7b72def Td2a8ff_parse_checkTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3checkTb4b4b4)Tb4b4b4:
Te6edf3fun_match Tff7b72= Tff7b72selfTff7b72.Td2a8ff_func_reTff7b72.Td2a8ffmatchTb4b4b4(Te6edf3checkTb4b4b4)
Tff7b72if Te6edf3fun_matchTb4b4b4:
Te6edf3fun_name Tff7b72= Te6edf3fun_matchTff7b72.Td2a8ffgroupTb4b4b4(T79c0ff1Tb4b4b4)
Te6edf3arg_string Tff7b72= Te6edf3fun_matchTff7b72.Td2a8ffgroupTb4b4b4(T79c0ff2Tb4b4b4)
Te6edf3arg_match Tff7b72= Tff7b72selfTff7b72.Td2a8ff_matchfinderTff7b72.Td2a8ffmatchTb4b4b4(Te6edf3arg_stringTb4b4b4)
Tff7b72if Te6edf3arg_match Tff7b72is Tff7b72NoneTb4b4b4:
T8b949e# Bad syntax
Tff7b72raise Te6edf3VdtParamErrorTb4b4b4(Ta5d6ff'Ta5d6ffBad syntax in check Ta5d6ff"Tffd700%sTa5d6ff"Ta5d6ff.Ta5d6ff' Tff7b72% Te6edf3checkTb4b4b4)
Te6edf3fun_args Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3fun_kwargs Tff7b72= Tb4b4b4{Tb4b4b4}
T8b949e# pull out args of group 2
Tff7b72for Te6edf3arg Tff7b72in Tff7b72selfTff7b72.Td2a8ff_paramfinderTff7b72.Td2a8fffindallTb4b4b4(Te6edf3arg_stringTb4b4b4)Tb4b4b4:
T8b949e# args may need whitespace removing (before removing quotes)
Te6edf3arg Tff7b72= Te6edf3argTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3listmatch Tff7b72= Tff7b72selfTff7b72.Td2a8ff_list_argTff7b72.Td2a8ffmatchTb4b4b4(Te6edf3argTb4b4b4)
Tff7b72if Te6edf3listmatchTb4b4b4:
Te6edf3keyTb4b4b4, Te6edf3val Tff7b72= Tff7b72selfTff7b72.Td2a8ff_list_handleTb4b4b4(Te6edf3listmatchTb4b4b4)
Te6edf3fun_kwargsTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Te6edf3val
Tff7b72continue
Te6edf3keymatch Tff7b72= Tff7b72selfTff7b72.Td2a8ff_key_argTff7b72.Td2a8ffmatchTb4b4b4(Te6edf3argTb4b4b4)
Tff7b72if Te6edf3keymatchTb4b4b4:
Te6edf3val Tff7b72= Te6edf3keymatchTff7b72.Td2a8ffgroupTb4b4b4(T79c0ff2Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3val Tff7b72in Tb4b4b4(Ta5d6ff"Ta5d6ff'Ta5d6ffNoneTa5d6ff'Ta5d6ff"Tb4b4b4, Ta5d6ff'Ta5d6ff"Ta5d6ffNoneTa5d6ff"Ta5d6ff'Tb4b4b4)Tb4b4b4:
T8b949e# Special case a quoted None
Te6edf3val Tff7b72= Tff7b72selfTff7b72.Td2a8ff_unquoteTb4b4b4(Te6edf3valTb4b4b4)
Te6edf3fun_kwargsTb4b4b4[Te6edf3keymatchTff7b72.Td2a8ffgroupTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4] Tff7b72= Te6edf3val
Tff7b72continue
Te6edf3fun_argsTff7b72.Td2a8ffappendTb4b4b4(Tff7b72selfTff7b72.Td2a8ff_unquoteTb4b4b4(Te6edf3argTb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4:
T8b949e# allows for function names without (args)
Tff7b72return Te6edf3checkTb4b4b4, Tb4b4b4(Tb4b4b4)Tb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4, Tff7b72None
T8b949e# Default must be deleted if the value is specified too,
T8b949e# otherwise the check function will get a spurious "default" keyword arg
Te6edf3default Tff7b72= Te6edf3fun_kwargsTff7b72.Td2a8ffpopTb4b4b4(Ta5d6ff'Ta5d6ffdefaultTa5d6ff'Tb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72return Te6edf3fun_nameTb4b4b4, Te6edf3fun_argsTb4b4b4, Te6edf3fun_kwargsTb4b4b4, Te6edf3default
Tff7b72def Td2a8ff_unquoteTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valTb4b4b4)Tb4b4b4:
Tff7b72if Tb4b4b4(Tffa657lenTb4b4b4(Te6edf3valTb4b4b4) Tff7b72>Tff7b72= T79c0ff2Tb4b4b4) Tff7b72and Tb4b4b4(Te6edf3valTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72in Tb4b4b4(Ta5d6ff"Ta5d6ff'Ta5d6ff"Tb4b4b4, Ta5d6ff'Ta5d6ff"Ta5d6ff'Tb4b4b4)Tb4b4b4) Tff7b72and Tb4b4b4(Te6edf3valTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72== Te6edf3valTb4b4b4[Tff7b72-T79c0ff1Tb4b4b4]Tb4b4b4)Tb4b4b4:
Te6edf3val Tff7b72= Te6edf3valTb4b4b4[T79c0ff1Tb4b4b4:Tff7b72-T79c0ff1Tb4b4b4]
Tff7b72return Te6edf3val
Tff7b72def Td2a8ff_list_handleTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3listmatchTb4b4b4)Tb4b4b4:
Te6edf3out Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3name Tff7b72= Te6edf3listmatchTff7b72.Td2a8ffgroupTb4b4b4(T79c0ff1Tb4b4b4)
Te6edf3args Tff7b72= Te6edf3listmatchTff7b72.Td2a8ffgroupTb4b4b4(T79c0ff2Tb4b4b4)
Tff7b72for Te6edf3arg Tff7b72in Tff7b72selfTff7b72.Td2a8ff_list_membersTff7b72.Td2a8fffindallTb4b4b4(Te6edf3argsTb4b4b4)Tb4b4b4:
Te6edf3outTff7b72.Td2a8ffappendTb4b4b4(Tff7b72selfTff7b72.Td2a8ff_unquoteTb4b4b4(Te6edf3argTb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3nameTb4b4b4, Te6edf3out
Tff7b72def Td2a8ff_passTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3value
Tff7b72def Td2a8ffget_default_valueTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3checkTb4b4b4)Tb4b4b4:
Te6edf3fun_nameTb4b4b4, Te6edf3fun_argsTb4b4b4, Te6edf3fun_kwargsTb4b4b4, Te6edf3default Tff7b72= Tff7b72selfTff7b72.Td2a8ff_parse_with_cachingTb4b4b4(Te6edf3checkTb4b4b4)
Tff7b72if Te6edf3default Tff7b72is Tff7b72NoneTb4b4b4:
Tff7b72raise Tf85149KeyErrorTb4b4b4(Ta5d6ff'Ta5d6ffCheck Ta5d6ff"Tffd700%sTa5d6ff"Ta5d6ff has no default value.Ta5d6ff' Tff7b72% Te6edf3checkTb4b4b4)
Te6edf3value Tff7b72= Tff7b72selfTff7b72.Td2a8ff_handle_noneTb4b4b4(Te6edf3defaultTb4b4b4)
Tff7b72if Te6edf3value Tff7b72is Tff7b72NoneTb4b4b4:
Tff7b72return Te6edf3value
Tff7b72return Tff7b72selfTff7b72.Td2a8ff_check_valueTb4b4b4(Te6edf3valueTb4b4b4, Te6edf3fun_nameTb4b4b4, Te6edf3fun_argsTb4b4b4, Te6edf3fun_kwargsTb4b4b4)
Tff7b72def Td2a8ff_is_num_paramTb4b4b4(Te6edf3namesTb4b4b4, Te6edf3valuesTb4b4b4, Te6edf3to_floatTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Te6edf3fun Tff7b72= Te6edf3to_float Tff7b72and Tffa657float Tff7b72or Tffa657int
Te6edf3out_params Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Tb4b4b4(Te6edf3nameTb4b4b4, Te6edf3valTb4b4b4) Tff7b72in Tffa657zipTb4b4b4(Te6edf3namesTb4b4b4, Te6edf3valuesTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3val Tff7b72is Tff7b72NoneTb4b4b4:
Te6edf3out_paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3valTb4b4b4)
Tff7b72elif Tffa657isinstanceTb4b4b4(Te6edf3valTb4b4b4, Tb4b4b4(Tffa657intTb4b4b4, Tffa657floatTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3out_paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3funTb4b4b4(Te6edf3valTb4b4b4)Tb4b4b4)
Tff7b72except Tf85149ValueErrorTb4b4b4:
Tff7b72raise Te6edf3VdtParamErrorTb4b4b4(Te6edf3nameTb4b4b4, Te6edf3valTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3VdtParamErrorTb4b4b4(Te6edf3nameTb4b4b4, Te6edf3valTb4b4b4)
Tff7b72return Te6edf3out_params
T8b949e# built in checks
T8b949e# you can override these by setting the appropriate name
T8b949e# in Validator.functions
T8b949e# note: if the params are specified wrongly in your input string,
T8b949e# you will also raise errors.
Tff7b72def Td2a8ffis_integerTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTff7b72=Tff7b72NoneTb4b4b4, Tffa657maxTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tb4b4b4(Te6edf3min_valTb4b4b4, Te6edf3max_valTb4b4b4) Tff7b72= Te6edf3_is_num_paramTb4b4b4( T8b949e# pylint: disable=unbalanced-tuple-unpacking
Tb4b4b4(Ta5d6ff'Ta5d6ffminTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffmaxTa5d6ff'Tb4b4b4)Tb4b4b4, Tb4b4b4(Tffa657minTb4b4b4, Tffa657maxTb4b4b4)Tb4b4b4)
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tb4b4b4(Tffa657intTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
T8b949e# if it's a string - does it represent an integer ?
Tff7b72tryTb4b4b4:
Te6edf3value Tff7b72= Tffa657intTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72except Tf85149ValueErrorTb4b4b4:
Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3min_val Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4) Tff7b72and Tb4b4b4(Te6edf3value Tff7b72< Te6edf3min_valTb4b4b4)Tb4b4b4:
Tff7b72raise Te6edf3VdtValueTooSmallErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3max_val Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4) Tff7b72and Tb4b4b4(Te6edf3value Tff7b72> Te6edf3max_valTb4b4b4)Tb4b4b4:
Tff7b72raise Te6edf3VdtValueTooBigErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72return Te6edf3value
Tff7b72def Td2a8ffis_floatTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTff7b72=Tff7b72NoneTb4b4b4, Tffa657maxTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tb4b4b4(Te6edf3min_valTb4b4b4, Te6edf3max_valTb4b4b4) Tff7b72= Te6edf3_is_num_paramTb4b4b4(
Tb4b4b4(Ta5d6ff'Ta5d6ffminTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffmaxTa5d6ff'Tb4b4b4)Tb4b4b4, Tb4b4b4(Tffa657minTb4b4b4, Tffa657maxTb4b4b4)Tb4b4b4, Te6edf3to_floatTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tb4b4b4(Tffa657intTb4b4b4, Tffa657floatTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657floatTb4b4b4)Tb4b4b4:
T8b949e# if it's a string - does it represent a float ?
Tff7b72tryTb4b4b4:
Te6edf3value Tff7b72= Tffa657floatTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72except Tf85149ValueErrorTb4b4b4:
Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3min_val Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4) Tff7b72and Tb4b4b4(Te6edf3value Tff7b72< Te6edf3min_valTb4b4b4)Tb4b4b4:
Tff7b72raise Te6edf3VdtValueTooSmallErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3max_val Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4) Tff7b72and Tb4b4b4(Te6edf3value Tff7b72> Te6edf3max_valTb4b4b4)Tb4b4b4:
Tff7b72raise Te6edf3VdtValueTooBigErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72return Te6edf3value
Te6edf3bool_dict Tff7b72= Tb4b4b4{
Tff7b72TrueTb4b4b4: Tff7b72TrueTb4b4b4, Ta5d6ff'Ta5d6ffonTa5d6ff'Tb4b4b4: Tff7b72TrueTb4b4b4, Ta5d6ff'Ta5d6ff1Ta5d6ff'Tb4b4b4: Tff7b72TrueTb4b4b4, Ta5d6ff'Ta5d6fftrueTa5d6ff'Tb4b4b4: Tff7b72TrueTb4b4b4, Ta5d6ff'Ta5d6ffyesTa5d6ff'Tb4b4b4: Tff7b72TrueTb4b4b4,
Tff7b72FalseTb4b4b4: Tff7b72FalseTb4b4b4, Ta5d6ff'Ta5d6ffoffTa5d6ff'Tb4b4b4: Tff7b72FalseTb4b4b4, Ta5d6ff'Ta5d6ff0Ta5d6ff'Tb4b4b4: Tff7b72FalseTb4b4b4, Ta5d6ff'Ta5d6fffalseTa5d6ff'Tb4b4b4: Tff7b72FalseTb4b4b4, Ta5d6ff'Ta5d6ffnoTa5d6ff'Tb4b4b4: Tff7b72FalseTb4b4b4,
Tb4b4b4}
Tff7b72def Td2a8ffis_booleanTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72return Te6edf3bool_dictTb4b4b4[Te6edf3valueTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)Tb4b4b4]
Tff7b72except Tf85149KeyErrorTb4b4b4:
Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
T8b949e# we do an equality test rather than an identity test
T8b949e# this ensures Python 2.2 compatibility
T8b949e# and allows 0 and 1 to represent True and False
Tff7b72if Te6edf3value Tff7b72== Tff7b72FalseTb4b4b4:
Tff7b72return Tff7b72False
Tff7b72elif Te6edf3value Tff7b72== Tff7b72TrueTb4b4b4:
Tff7b72return Tff7b72True
Tff7b72elseTb4b4b4:
Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72def Td2a8ffis_ip_addrTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Te6edf3value Tff7b72= Te6edf3valueTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3dottedQuadToNumTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72except Tf85149ValueErrorTb4b4b4:
Tff7b72raise Te6edf3VdtValueErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72return Te6edf3value
Tff7b72def Td2a8ffis_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTff7b72=Tff7b72NoneTb4b4b4, Tffa657maxTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tb4b4b4(Te6edf3min_lenTb4b4b4, Te6edf3max_lenTb4b4b4) Tff7b72= Te6edf3_is_num_paramTb4b4b4( T8b949e# pylint: disable=unbalanced-tuple-unpacking
Tb4b4b4(Ta5d6ff'Ta5d6ffminTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffmaxTa5d6ff'Tb4b4b4)Tb4b4b4, Tb4b4b4(Tffa657minTb4b4b4, Tffa657maxTb4b4b4)Tb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3num_members Tff7b72= Tffa657lenTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72except Tf85149TypeErrorTb4b4b4:
Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Te6edf3min_len Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3num_members Tff7b72< Te6edf3min_lenTb4b4b4:
Tff7b72raise Te6edf3VdtValueTooShortErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Te6edf3max_len Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3num_members Tff7b72> Te6edf3max_lenTb4b4b4:
Tff7b72raise Te6edf3VdtValueTooLongErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72return Tffa657listTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72def Td2a8ffis_tupleTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTff7b72=Tff7b72NoneTb4b4b4, Tffa657maxTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72return Tffa657tupleTb4b4b4(Te6edf3is_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTb4b4b4, Tffa657maxTb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ffis_stringTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTff7b72=Tff7b72NoneTb4b4b4, Tffa657maxTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tb4b4b4(Te6edf3min_lenTb4b4b4, Te6edf3max_lenTb4b4b4) Tff7b72= Te6edf3_is_num_paramTb4b4b4(
Tb4b4b4(Ta5d6ff'Ta5d6ffminTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffmaxTa5d6ff'Tb4b4b4)Tb4b4b4, Tb4b4b4(Tffa657minTb4b4b4, Tffa657maxTb4b4b4)Tb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3num_members Tff7b72= Tffa657lenTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72except Tf85149TypeErrorTb4b4b4:
Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Te6edf3min_len Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3num_members Tff7b72< Te6edf3min_lenTb4b4b4:
Tff7b72raise Te6edf3VdtValueTooShortErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Te6edf3max_len Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3num_members Tff7b72> Te6edf3max_lenTb4b4b4:
Tff7b72raise Te6edf3VdtValueTooLongErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72return Te6edf3value
Tff7b72def Td2a8ffis_int_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTff7b72=Tff7b72NoneTb4b4b4, Tffa657maxTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4[Te6edf3is_integerTb4b4b4(Te6edf3memTb4b4b4) Tff7b72for Te6edf3mem Tff7b72in Te6edf3is_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTb4b4b4, Tffa657maxTb4b4b4)Tb4b4b4]
Tff7b72def Td2a8ffis_bool_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTff7b72=Tff7b72NoneTb4b4b4, Tffa657maxTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4[Te6edf3is_booleanTb4b4b4(Te6edf3memTb4b4b4) Tff7b72for Te6edf3mem Tff7b72in Te6edf3is_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTb4b4b4, Tffa657maxTb4b4b4)Tb4b4b4]
Tff7b72def Td2a8ffis_float_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTff7b72=Tff7b72NoneTb4b4b4, Tffa657maxTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4[Te6edf3is_floatTb4b4b4(Te6edf3memTb4b4b4) Tff7b72for Te6edf3mem Tff7b72in Te6edf3is_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTb4b4b4, Tffa657maxTb4b4b4)Tb4b4b4]
Tff7b72def Td2a8ffis_string_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTff7b72=Tff7b72NoneTb4b4b4, Tffa657maxTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72return Tb4b4b4[Te6edf3is_stringTb4b4b4(Te6edf3memTb4b4b4) Tff7b72for Te6edf3mem Tff7b72in Te6edf3is_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTb4b4b4, Tffa657maxTb4b4b4)Tb4b4b4]
Tff7b72def Td2a8ffis_ip_addr_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTff7b72=Tff7b72NoneTb4b4b4, Tffa657maxTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4[Te6edf3is_ip_addrTb4b4b4(Te6edf3memTb4b4b4) Tff7b72for Te6edf3mem Tff7b72in Te6edf3is_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTb4b4b4, Tffa657maxTb4b4b4)Tb4b4b4]
Tff7b72def Td2a8ffforce_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTff7b72=Tff7b72NoneTb4b4b4, Tffa657maxTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tb4b4b4(Tffa657listTb4b4b4, Tffa657tupleTb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3value Tff7b72= Tb4b4b4[Te6edf3valueTb4b4b4]
Tff7b72return Te6edf3is_listTb4b4b4(Te6edf3valueTb4b4b4, Tffa657minTb4b4b4, Tffa657maxTb4b4b4)
Te6edf3fun_dict Tff7b72= Tb4b4b4{
Tffa657intTb4b4b4: Te6edf3is_integerTb4b4b4,
Ta5d6ff'Ta5d6ffintTa5d6ff'Tb4b4b4: Te6edf3is_integerTb4b4b4,
Ta5d6ff'Ta5d6ffintegerTa5d6ff'Tb4b4b4: Te6edf3is_integerTb4b4b4,
Tffa657floatTb4b4b4: Te6edf3is_floatTb4b4b4,
Ta5d6ff'Ta5d6fffloatTa5d6ff'Tb4b4b4: Te6edf3is_floatTb4b4b4,
Ta5d6ff'Ta5d6ffip_addrTa5d6ff'Tb4b4b4: Te6edf3is_ip_addrTb4b4b4,
Tffa657strTb4b4b4: Te6edf3is_stringTb4b4b4,
Ta5d6ff'Ta5d6ffstrTa5d6ff'Tb4b4b4: Te6edf3is_stringTb4b4b4,
Ta5d6ff'Ta5d6ffstringTa5d6ff'Tb4b4b4: Te6edf3is_stringTb4b4b4,
Tffa657boolTb4b4b4: Te6edf3is_booleanTb4b4b4,
Ta5d6ff'Ta5d6ffboolTa5d6ff'Tb4b4b4: Te6edf3is_booleanTb4b4b4,
Ta5d6ff'Ta5d6ffbooleanTa5d6ff'Tb4b4b4: Te6edf3is_booleanTb4b4b4,
Tb4b4b4}
Tff7b72def Td2a8ffis_mixed_listTb4b4b4(Te6edf3valueTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4: Te6edf3length Tff7b72= Tffa657lenTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72except Tf85149TypeErrorTb4b4b4: Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Te6edf3length Tff7b72< Tffa657lenTb4b4b4(Te6edf3argsTb4b4b4)Tb4b4b4: Tff7b72raise Te6edf3VdtValueTooShortErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72elif Te6edf3length Tff7b72> Tffa657lenTb4b4b4(Te6edf3argsTb4b4b4)Tb4b4b4: Tff7b72raise Te6edf3VdtValueTooLongErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72tryTb4b4b4: Tff7b72return Tb4b4b4[Te6edf3fun_dictTb4b4b4[Te6edf3argTb4b4b4]Tb4b4b4(Te6edf3valTb4b4b4) Tff7b72for Te6edf3argTb4b4b4, Te6edf3val Tff7b72in Tffa657zipTb4b4b4(Te6edf3argsTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4]
Tff7b72except Tf85149KeyError Tff7b72as Te6edf3causeTb4b4b4: Tff7b72raise Te6edf3VdtParamErrorTb4b4b4(Ta5d6ff'Ta5d6ffmixed_listTa5d6ff'Tb4b4b4, Te6edf3causeTb4b4b4)
Tff7b72def Td2a8ffis_optionTb4b4b4(Te6edf3valueTb4b4b4, Tff7b72*Te6edf3optionsTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4: Tff7b72raise Te6edf3VdtTypeErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72if Tff7b72not Te6edf3value Tff7b72in Te6edf3optionsTb4b4b4: Tff7b72raise Te6edf3VdtValueErrorTb4b4b4(Te6edf3valueTb4b4b4)
Tff7b72return Te6edf3value
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────